package springbootcache;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;

/**
 * 搭建基本环境
 * 1. 导入数据库文件 创建出department和employee表
 * 2. 创建javabean封装数据
 * 3. 整合mybatis操作数据库
 *    1.配置数据源
 *    2.使用注解版的MyBatis
 *二、 快速体验缓存
 *     步骤：
 *         1. 开启基于注解的缓存 @EnableCaching
 *         2. 标注缓存注解即可
 *               @cacheable
 *               @cacheEvict
 *               @CachePut
 *     默认使用的是ConcurrentMapCacheManager==ConcurrentMapCache;将数据保存在ConcurrentMap<Object,Obejct></Object,Obejct>
 *     开发中使用缓存中间件；redis, memcached; ehcache;
 * 三、整合Redis作为缓存
 *      1.安装Redis，使用docker
 *      2.引入Redis的starter
 *      3.配置redis
 *      4.测试缓存
 *         原理CacheManager==Cache缓存组件来实际给缓存汇中存取数据
 *         1)引入redis的starter,容器中保存的是RedisCacheManager
 *         2)RedisCacheManager帮我们创建Rediscache来作为缓存组件；RedisCache通过操作redis缓存数据
 *         3）默认保存数据k-v都是Object；利用序列化保存，如何保存为json
 *               1.引入了redis的starter，CacheManager变成了RedisCacheManager
 *               2.默认创建的RedisCacheManager操作redis的时候使用的是RediTemplate
 *               3.RedisTemplate是默认使用jdk的序列化机制
 *          4）自定义CacheManager
 */

@MapperScan("springbootcache.mapper")
@EnableCaching
@SpringBootApplication
public class SpringbootcacheApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootcacheApplication.class, args);
    }

}
